package com.shujia.day07;

/*
    代码块：在java程序中，使用{}括起来的代码，代码块

    在不同的位置，以及使用不同的修饰词写的代码块，分为不同种类的代码块。
    局部代码块：在方法中使用带括号括起来的代码段，整体称之为叫做局部代码块,主要作用是限定变量的作用域
    构造代码块：写法和局部代码块的写法是一样的，但是构造代码块是写在类中方法外的位置
        随着构造方法的调用而执行，执行顺序是 构造代码块->构造方法
    静态代码块：写法上在前两种代码块的写法上，前面是使用static进行修饰，在类中方法外编写
        是在程序运行之前，加载的时候执行，只会加载一次，静态代码块只会在程序运行之前有且仅执行一次！
        同一个类中静态代码块之间的执行顺序是自上而下
        静态代码块 -> 构造代码块 -> 构造方法
    同步代码块【今天不说，放到后面多线程的时候讲解】

 */
public class CodeDemo1 {

    CodeDemo1(){
        System.out.println("这是无参的构造方法。。。。");
    }

    //静态代码块
    static {
        System.out.println("这是静态代码块1。。");
    }

    //构造代码块
    {
        System.out.println("这是构造代码块。。。");
    }

    //静态代码块
    static {
        System.out.println("这是静态代码块2。。。");
    }

    public static void main(String[] args) {
//        {
//            //局部代码块
//            int a = 10;
//            System.out.println(a);
//        }
//
//        {
//            //局部代码块
//            int a = 20;
//            System.out.println(a);
//        }

        CodeDemo1 codeDemo1 = new CodeDemo1();
        CodeDemo1 codeDemo2 = new CodeDemo1();


    }
}
